import jdk.nashorn.internal.ir.annotations.Ignore;
import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.CsvFileSource;
import org.junit.jupiter.params.provider.MethodSource;
import org.junit.jupiter.params.provider.ValueSource;

import java.util.stream.Stream;

public class JunitTest {

    public static Stream<Arguments> Generator() {
        return Stream.of( Arguments.arguments(1, "张三"),
                Arguments.arguments(2, "李四"),
                Arguments.arguments(3, "王五") );
    }

    @Test
    void Test01() {
        System.out.println("这是 JunitTest 里面的 Test01");
    }

    @Test
    void Test02() {
        System.out.println("这是 JunitTest 里面的 Test02");
    }

    @Disabled  // 忽视这个测试用例
    void Test03() {
        System.out.println("==");
    }

//    @BeforeAll
//    static void setUp() {
//        System.out.println("这是 BeforeAll 里边的语句");
//    }
//
//    @AfterAll
//    static void TearDown() {
//        System.out.println("这是 AfterAll 里面的语句");
//    }

    @BeforeEach
    void BeforeEachTest() {
        System.out.println("这是 BeforeEachTest 的语句");
    }

    @AfterEach
    void AfterEachTest() {
        System.out.println("这是 AfterEachTest 的语句");
    }

    // 单参数
    @ParameterizedTest
    @ValueSource(ints = {1, 2, 3})
    void Test04(int num) {
        System.out.println(num);
    }

    // 单参数
    @ParameterizedTest
    @ValueSource(strings = {"1", "2", "3"})
    void Test05(String number) {
        System.out.println(number);
    }

    // CSV 获取文件参数
    @ParameterizedTest
    @CsvFileSource(resources = "test01.csv")
    void Test06(String name) {
        System.out.println(name);
    }

    // 方法获取参数
    @ParameterizedTest
    @MethodSource("Generator")
    void Test07(int num, String name) {
        System.out.println(num + ":" + name);
    }
}
